<?php
if ( !defined('IN_SCRIPT') )  { header("Location: index.php"); exit;}

$page_title = $lang['auth_title'];
$smarty->assign('content', 'auth_page');

// активация аккаунта
if(get_param('a') != '' && field_validator('hash', get_param('a'), 'alphanumeric', 5, 64))
{
    $result = db_query("SELECT * FROM `users` WHERE `hash` = '".get_param('a')."'");
    if(mysql_num_rows($result)==1) {
        $row=mysql_fetch_array($result);
        db_query("UPDATE `users` SET `hash`=''");
        cleanMemberSession($row);
        header("Location: $current_location/$index_script");
        exit;
    }
}
             
if(empty($_COOKIE['gfts_m']) || !preg_match("/[0-9a-z\.]/i", $_COOKIE['gfts_m']))
    $smarty->assign('no_coockie', true);

if ($REQUEST_METHOD == 'POST') {
    $email = (field_validator($lang['email'], $email, "email", 5, 100) ? $email : '' );
    $password = (field_validator($lang['password'], $_POST["password"], "string", 3, 20) ? $_POST["password"] : '' );
    if(!$messages && !($row = check_user($email, md5($password))))
        add_message($lang['wrong_email_psw'], 'warning');                         

    if(!$messages) {
        if(!EMAIL_ACTIVATION || $row['hash'] == '') {
            cleanMemberSession($row);
            header("Location: $current_location/$row[idusers]");
            exit; 
        } else {
            $lang['activation_sent_msg'] = sprintf($lang['activation_sent_msg'], $row['email']);
            $smarty->assign('email', $row['email']); 
            $smarty->assign('content', 'reg_page_activation');
        }
    } else {
        $smarty->assign('email', $email);
        $smarty->assign('have_errors', true);
    }
}
/*
if ($mode == 'logout') {
    flushMemberSession();
    header("Location: $current_location/$index_script");
}
*/
if (($mode == 'logout') )  {
    // сохраняем выбранный язык
    if(LOGGED_IN) db_query("UPDATE `users` SET `language` = '$_SESSION[language]' where `idusers` = '$_SESSION[id]'");
    flushMemberSession();
    
    header("Location: $current_location/");
    exit;
} elseif (LOGGED_IN) {
    header("Location: $current_location/$index_script");
    exit;
} elseif ($mode == 'login' && get_param('by') == 'vk' && ALTERNATIVE_LOGIN) {      // авторизация через ВКонтакте
    //include_once (INCLUDE_DIR.DS.'vk'.DS.'openapi.php');
    //$vk = new Auth_Vkontakte();
    
    $uid = field_validator('uid', $uid, "number", 1, 11, 1) ? $uid : '';
    $first_name = field_validator('First name', $first_name, "name_unicode", 1, 50, 0) ? $first_name : '';
    $last_name = field_validator('Last name', $last_name, "name_unicode", 1, 50, 0) ? $last_name : '';
    $photo = field_validator('Photo', $photo, "url", '', 200, 0) ? $photo : '';
    $photo_rec = field_validator('Photo rec', $photo_rec, "url", '', 200, 0) ? $photo_rec : '';
    
    if ($_REQUEST['hash']==md5(VK_APP_ID.$uid.VK_SECRET_KEY)) {
    //доверяем вконтактику, и далее полагаем, что пользователь действительно авторизован там
    
        $user_id = false; 
        $row = check_external_user('vk'.$uid);
        if($row === false) {  
            // добавляем юзера
            $user_id = db_insert("INSERT INTO `users` (`external_id`, `reg_date`, `language`, `first_name`, `last_name`, `pass` ) VALUES ('vk$uid', UTC_TIMESTAMP(), '$_SESSION[language]', '$first_name', '$last_name', '".md5(uniqid(rand(),true))."')");
        } else {
            // обновляем данные юзера из соц сети
            db_query("UPDATE `users` SET `first_name`='$first_name', `last_name`='$last_name' WHERE `external_id`='vk$uid'");
        }
        
        if(!EMAIL_ACTIVATION || ($row && $row['email'] != '' && $row['hash'] == '')) {
            cleanMemberSession($row);
            header("Location: $current_location/");
            exit; 
        } else {
            if($user_id !== false || ($row && $row['email'] == '')) {       // к упрощенной регистрации
                $smarty->assign('ext_id', $uid); 
                $smarty->assign('ext_hash', $_REQUEST['hash']); 
                $smarty->assign('content', 'reg_page_simple');
            } else {                                                        // к активации
                $lang['activation_sent_msg'] = sprintf($lang['activation_sent_msg'], $row['email']);
                $smarty->assign('email', $row['email']); 
                $smarty->assign('content', 'reg_page_activation');
            }
        }
        
        // Здесь проверяем, зарегистирован ли у вас пользователь с таким VK_ID, в случае, если зарегистирован - перекидываем его на главную
        // Если не зарегистирован - надо показать ему упрощенную форму регистрации
      //  echo "Ураааа!!!! Привет, ".$vk_auth;
    }
    else {
        add_message($lang['vk_auth_failed']);   
        $smarty->assign('have_errors', true);
    }
}
?>

